package com.atguigu.bigdata.scala.chapter08

object Scala07_Match {

    def main(args: Array[String]): Unit = {
        // TODO - 模式匹配 - 对象匹配
        // 如果声明一个类，前面使用case关键字声明，那么这个类称之为样例类，专门为了模式匹配而设计的类
        // 样例类也可以当成普通类来用
        // 如果声明一个样例类，那么编译器会给这个类生成大量的方法和伴生对象
        // 样例类不仅仅生成伴生对象，也生成了很多常用的方法，apply, unapply
        // 样例类自动实现可序列化接口
        // 样例类的构造参数会自动变为类的属性，可以直接访问,但是不能修改，如果想要修改，那么需要使用var声明

        val user = getUser()
        user.name = "wangwu"


        user match {
            case User("zhangsan", 30) => println("用户是张三")
            case User("lisi", 30) => println("用户是李四")
            case _ => println("谁也不是")
        }

    }
    case class User(var name:String, age:Int) {

    }
    def getUser() = {
        new User("zhangsan", 30)
    }
}
